S-100 Software
This section of this
web site is dedicated to software to run on S-100 systems. Clearly this could
be a whole web site in itself. I will concentrate here on software that is focused
on getting the hardware up and running and that I have either written myself or
have used extensively.
MASTER.Z80 -- A System PROM monitor
A Z80 Monitor Program
This is ROM based Zapple like monitor program for a Z80. It is a
menu driven ROM based program to allow you to bring up a basic functional
system. It is toughly documented to allow its adaption to most hardware
configurations.
VF.Z80 -- A Diagnostic Program for the SD Systems Floppy disk
controller board
A Versafloppy II Diagnostic Program This is a diagnostic program for a Versafloppy II
disk controller board. Again it is menu driven to
allow you to bring up a basic functional system.
SIO8.Z80 -- A Diagnostic Program for
the SD Systems Serial IO/Clock
Board.
This is a very powerful 8 Port Serial (RS232) I/O board. See
here for a detailed description.
I have written a little program to configure the Serial Ports and Time/Clock
chip on this board. It can be see
here, and downloaded
here. As usual it can be easily modified for the same chip on other
boards.
Besides containing four Zilog 8530 dual serial I/O chips, this board also has a
National Semiconductor MM58167 Clock/Calendar chip. The above program also
allows the on board clock chip to be set and read. However for the S100Cpmputers
custom built PIC/RTC board (which also utilizes the MM58167), see below, a more
extensive and detailed program was written. That program will also work with
this board.
PCGET.ASM and PCPUT.ASM -- A Way of Moving Files Back & Forth Between S-100 Computers
and an IBM PC.
Often it is nice to be able to move a CP/M or other S-100 based programs
(Monitor, diagnostics etc.) up to a PC. There it can be used as a backup storage
area or assembled/run on a PC based Z80/CPM simulator. To do this one needs a
way to conveniently get data back and forth. You could use a 5" floppy (on an old
PC) and configure the S-100 system to read the disk, or use one of the older PC
disk format reading programs and go in the other direction.
I opted for a simpler approach. I modified one of the many versions of Ward
Christenson's CP/M's "Modem Program" to simply pass files back and forth over a serial link. I use a
USB->Serial connector on the PC and the
SD Systems IO8 Serial board on the S-100 end. (With slight modifications any
serial board can be used). The original program is stripped down to simply
accept (or send) a file named in the CP/M command line.
The program to upload a CP/M file to a PC is
PCPUT.COM. The source can be seen
here.
The program to download from a PC a file to a CP/M system
is PCGET.COM. The source can be seen
here.
Both of these programs should be assembled with Digital
Research's MAC
assembler. This program can be obtained
here.
The serial ports sections of both programs should be modified for your own
hardware.
The Zip file of both programs can be obtained
here.
If you are up to it, you can use the CP/M program "LU" to compress many CP/M
files into one large file, upload that "library" file and extract files out on
the PC side (using a CP/M simulator). LU.COM can be obtained
here.
On the PC end one can use any number of PC based serial port Modem programs.
They should be capable of utilizing the original "XModem" protocol, not the
newer "XModem (crc)" or "XModem (1K)" protocols. I particularly like
Celestial Software's
Absolute
Telnet program. They have a free "light version" and a "Professional
version" for $50. The latter is well worth it as it has many other additional
useful features.
ALTAIR.COM -- Running CPM3 on a PC
In much of my development work for building CPM programs for my S-100
system I actually build, edit, assemble and sometimes even execute the program
first on an IBM PC using Windows XP or Windows 7. One day I hope to
have an S-100 video board of the resolution that current PC video boards have
but for now, nothing compares with the editing convenience of Microsoft's Visual
Studio when working with .Z80 or .ASM files.
While you can edit the programs under windows (Visual Studio), you need a "CPM
emulator" to assemble them and/or execute them. There are a few good CPM
emulators for the PC available. I like to work with Peter Schorn's
AltairZ80 Simulator. He has put an enormous amount of work into building a
Windows based program that behaves as if your PC was a S-100 Altair computer.
Start with
this documentation for some background information. However to
assemble and run your own CPM programs you only need to launch the CPM3 emulator
within the Altair.com program itself. From then on (transparent to you) you are
operating under CPM3 in a Windows box. The necessary software and instructions
are all described
here.
Software for the S100Computers & NVRAM S-100 IDE
Board
An S-100 IDE
Hard Disk Controller Board Andrew Lynch and I have
constructed an S-100 board that allows one to interface an IDE
hard drive (or memory board) to the S-100 bus. Relative to the old ST-506
Winchester drives, IDE drives are simple to interface, quiet, and inexpensive.
All the software for that board can be found
here.
Software for the S100Computers &
NVRAM PIC & RTC S-100 Board
A PIC
and RTC S-100 Board Andrew Lynch and I have
constructed an Priority Interrupt and Real Time Clock S-100 board that allows one to
utilize the interrupt structure of the S-100 bus with both 8 and 16 bit CPU's.
The board also contains a National Semiconductor MM58167
Clock/Calendar chip. This is really two S-100 boards in one. Example
software for interrupt testing can be seen here, and downloaded here.
Software for the RTC chip and checking its functionality worth CPM3's date and
time stamping capability can be seen here, and downloaded here.
A Collection of CPM based 8080/Z80/8086 Assemblers and Linkers.
Over the years I utilized a number of assemblers and linkers. Each had its own
advantage and quirks. I have put together a collection of some of the better ones in one spot for easy downloads.
They include the following (in no particular order) ....
TDL's Z80 Macro Assembler.
Cromemco's Z80 Assembler.
Digital Research's MAC and RMAC
SLR's ZASM
Digital Research's ASM86
Microsoft's M80 and L80
SD Systems ZASM
Others.
They are all briefly discussed and can be downloaded
here
A Collection of Useful Assembly Language Routines
Check
here for a collection of small but useful Z80, 8080 and 8086 Assembly
Language routines I use time and time again in programs.
Bringing Up CPM3 for the First Time (Writing a
CPM3 BIOS for the S-100 ZFDC FDC Board)
Most early S-100 Computer systems used CPM2.2 (or earlier) as the basic computer
disk operating system. The system was fairly simple to implement and was
the germination base for much of the microcomputer worlds software. The
system however had many limitations in particular it was designed for a standard
8" IBM single density single sided floppy disk with 128 byte sectors. As
newer disk sizes and formats started to appear -- particularly hard disks, the
system started to show its limitations. Digital Research's answer was
CPM3. This version of CPM allowed essentially any sector size and disk
format to be used easily and efficiently. What CPM3 did was hide within
the operation system itself the 128 byte sector size requirement and allow the
BIOS to work easily with any sector size "transparently". The system had an
elaborate disk hashing/data buffering system as well. Of particular
usefulness was the fact that it existed in two forms. A "standard" NON BANKED
version that operated like CPM2.2 in a Z80 system with 64K (or less) of RAM.
However there was a much more efficient "BANKED" version of CPM3 which by using
onboard 'bank switching" hardware, could utilize up to (in theory) many
megabytes of RAM. Typically 128K or 256K RAM systems were used. This
allowed for a very fast and sophisticated system with for example things like
file time and date stamping.
It should be noted that this BANKED system absolutely requires that the Z80 can
switch in and out a portion of its 64K adders space with other RAM boards.
There were a number of ways this was done in hardware. The Cromemco and
Godbout systems utilized an IO port to switch RAM boards.
Intersystem's and our own
S100Computes/N8VEM Z80 board, use on-board Z80 CPU board hardware to extend
the addressing range of the Z80. We will discuss this later.
For now lets start with a very simple CPM3 BIOS. We will step by step
build the system up to a much more complex setup. Eventually arriving at a
BANKED system with multiple floppy, hard and memory disk connections.
Please click here
to read about this process.
Bringing Up CPM3 for the First Time
(Writing a
CPM3 BIOS for an S-100 IDE Hard Disk or CF Card)
This section is an extension of the above CPM3 for a floppy disk except that now
we will boot CPM3 up from a Hard Disk
Please click
here
to read about this process.
Bringing Up CPM86+ for the First Time
(Writing a CPM86+ BIOS for the Dual S-100 IDE and ZFDC Boards)
This section is devoted to beginners trying to implement CPM86+ in their
S-100 system. Obviously the system must have an 8686 (or above) CPU board.
The details and examples given are quite general and can be applied to any
capable S-100 system. However all the examples are centered around our Dual IDE
and ZFDC disk controllers.
Please click
here
to read about this process.
This page was last modified
on 06/21/2011